package com.mmaingenieria.GestorFacturacion.model;

import com.mmaingenieria.GestorFacturacion.beans.Usuario;
import com.mmaingenieria.GestorFacturacion.enumeraciones.Rol;
import com.mmaingenieria.GestorFacturacion.excepciones.UsuarioException;
import com.mmaingenieria.GestorFacturacion.model.interfaces.InterfaceUsuarioDAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.ResourceBundle;

/**
 *
 * @author Mikle
 */
public class MySqlUsuarioDAO implements InterfaceUsuarioDAO{

    
    //creamos un resouceBoundle que leera el archivo excepciones.properties
    //y segun la variable escribira una cosa u otra.
    private static ResourceBundle rb;
    
    //Construtor
    //*************************************************************************
    public MySqlUsuarioDAO() {
        //decimos que lea dicho archivo
        //rb = ResourceBundle.getBundle("com.mmaingenieria.GestorFacturacion.exceptions.excepciones");
    }
    
    
    //Metodos que hay que implementar por extender de InterfaceUsuario
    //*************************************************************************
    public synchronized ArrayList<Usuario> getUsuarios() throws Exception
    {
        ArrayList<Usuario> listausuarios = null;//creo un arraylist de tipo usuarios
        Connection conexion = null;
        String sql = null;

        sql = "SELECT usuario_id, dni, nombre, apellido1,apellido2, usuario, password, email, date_created, estado FROM usuario";
       
        try{
			conexion = MySqlDAOFactory.conectar();
		    PreparedStatement stmt = conexion.prepareStatement(sql);//preparas la query
		    ResultSet resultadoquery = stmt.executeQuery();//realizas la query
		    listausuarios = new ArrayList<Usuario>();
		    while (resultadoquery.next()) 
		    {//recorres el resultado
		        listausuarios.add(instanciarUsuario(resultadoquery));//por cada recordset lo pasa a usuario y lo añades a la lista
		    }		
        }
        catch(Exception ex)
        {
        	throw ex;
        }
        finally
        {
        	MySqlDAOFactory.desconectar(conexion);	
        }
	    	   
        return listausuarios;
    }
    
    
    
    
    //Metodos
    //*************************************************************************
    public Usuario instanciarUsuario(ResultSet rs) throws Exception {
        Usuario usuario = null;

        usuario = new Usuario();
        usuario.setId(rs.getInt("usuario_id"));
        usuario.setDni(rs.getString("dni"));
        usuario.setNombre(rs.getString("nombre"));
        usuario.setApellido1(rs.getString("apellido1"));
        usuario.setApellido2(rs.getString("apellido2"));
        usuario.setUsuario(rs.getString("usuario"));
        usuario.setPassword(rs.getString("password"));
        usuario.setEmail(rs.getString("email"));
        usuario.setEstado(rs.getInt("estado"));
        usuario.setDateCreated(rs.getLong("date_created"));
      	usuario.setRol(rs.getInt("rol"));        
           
        System.out.println(usuario.getNombre());
        return usuario;
    }
    
    
    
    
}
